Soru & Cevap

BottomNavigation bar sorunu

15.09.2017 - 08:16

merhabalar,

şöyle bir sorunum vardı 

bottomnavigation bar ekledim bardaki her ikona bir fragment bağladım.Anasayfa Fragment sayfasına bir button ekledim ve bu button yeni bir fragmente geçiyor.Geçtiği fragmentde bottomnavigation bar yuraıda görünüyor ve ikonlarda ki tıklama olayları çalışmıyor.

Bütün fragmentler bir aktiviteye bağlı.

anasayfa fragmnet

https://imgur.com/a/F2JKx

yeni fragment

https://imgur.com/a/F2JKx

yardımlarınızı bekliyorum

206 Görüntülenme

1 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-103767-1491764696.jpg
elfaybkeasln
15.09.2017 - 11:55

Öncelikle bottombar üzerindeki iconları tutmak için res klasörü aldında new resource directory diyerek menu klasörü oluşturuyoruz. menu klasörünün altındaki xml'imiz aşağıdaki şekilde olucak

bottom_navigation.xml


<?xml version="1.0" encoding="utf-8"?>

<menu

xmlns:android="http://schemas.android.com/apk/res/android">

<item

android:id="@+id/icon_bir"

android:icon="@drawable/icon_bir"

android:title="@string/icon_bir"/>

<item

android:id="@+id/icon_iki"

android:icon="@drawable/icon_iki"

android:title="@string/icon_iki"/>

<item

android:id="@+id/icon_uc"

android:icon="@drawable/icon_uc"

android:title="@string/icon_uc"/>

<item

android:id="@+id/icon_dort"

android:icon="@drawable/icon_dort"

android:title="@string/icon_dort"/>

</menu>
 

 

activity_main.xml


<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout android:id="@+id/activity_main"

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

android:layout_width="match_parent"

android:layout_height="match_parent">

<FrameLayout

android:id="@+id/rootLayout"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_above="@+id/bottom_navigation"

android:orientation="vertical">

</FrameLayout>

<android.support.design.widget.BottomNavigationView

android:id="@+id/bottom_navigation"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

app:menu="@menu/bottom_navigation"/>

</RelativeLayout>

 

BottomBarın bulunduğu ana yapı yukarıda görüldüğü gibi. Bottom bar içinde kullanacağın her bir icon içinde bir fragment oluşturman lazım. Misal aşağıdaki gibi. 

 

birinci.fragment


<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@android:color/holo_blue_dark"  (burada herbirine arka plan rengini farklı atarsan sayfa geçişlerinin olup olmadığını rahatlıkla görebilirsin )

android:gravity="center"

android:orientation="vertical">

<TextView

android:id="@+id/textView"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:gravity="center" />

</LinearLayout>

 

Java kısmı ise

BirinciFragment.java


public class BirinciFragment extends Fragment {

@Nullable

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

return inflater.inflate(R.layout.birinci_fragment, container, false);

} }

 

MainActivity.java

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

setupNavigationView();

}

private void setupNavigationView() {

BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottom_navigation); 

if (bottomNavigationView != null) {

 
Menu menu =bottomNavigationView.getMenu();

selectFragment(menu.getItem(0));

bottomNavigationView.setOnNavigationItemSelectedListener( new BottomNavigationView.OnNavigationItemSelectedListener() {

@Override


bottomNavigationView.setOnNavigationItemSelectedListener( new BottomNavigationView.OnNavigationItemSelectedListener() {

@Override public boolean onNavigationItemSelected(@NonNull MenuItem item) {

selectFragment(item);

return false; }

});

} }

protected void selectFragment(MenuItem item) {

item.setChecked(true);

switch (item.getItemId()) {

case R.id.icon_bir: 

pushFragment(new BirinciFragment());

break;

case R.id.icon_iki:

pushFragment(new IkinciFragment());

break;

case R.id.icon_uc:

pushFragment(new UcuncuFragment());

break;

case R.id.icon_dort:

pushFragment(new DorduncuFragment()); 

break;

} }


protected void pushFragment(Fragment fragment) {

if (fragment == null)

return;

FragmentManager fragmentManager = getFragmentManager();

if (fragmentManager != null) {

FragmentTransaction ft = fragmentManager.beginTransaction();

if (ft != null) {

ft.replace(R.id.rootLayout, fragment);

ft.commit();

} }

} }
 

Attığın ekran görüntülerini göremedim ama bu sorununa çözüm olacaktır. İyi çalışmalar :)